package exsun.jt808.data.jt809_data.alarm.main;

import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.annotation.JsonFormat;
import exsun.jt808.data.jt809_data.BasicVehicleInfo;
import exsun.jt808.data.jt809_data.SendBaseEntity;
import lombok.Data;
import org.apache.commons.lang3.RandomUtils;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;

/**
 * 主动上报报警信息消息
 */
@Data
public class UpWarnMsgInfoEX extends SendBaseEntity {

    public BasicVehicleInfo basicVehicleInfo;

    /**
     * 报警来源 1
     * 0x01 车载终端
     * 0x02 企业监控平台
     * 0x03 政府监管平台
     * 0x04 其他
     */
    public int warnSrc = 0x01;

    /**
     * 报警类型，详见常量定义中的报警类型
     */
    public int warnType;

    /**
     * 报警时间，UTC 时间格式
     */
    public long warnTime;

    /**
     * 报警信息 ID
     */
    public String infoId;

    /**
     * 驾驶员姓名
     */
    public String driver;

    /**
     * 驾驶员驾照号码
     */
    public String driverNo;

    /**
     * 报警级别
     */
    public int level;

    /**
     * 经度 单位为 1*10^-6 度
     */
    public double lon;

    /**
     * 纬度 单位为 1*10^-6 度
     */
    public double lat;

    /**
     * 海拔高度 单位为米(m)
     */
    public int altitude;

    /**
     * 行车速度 单位为千米每小时(km/h)
     */
    public double vec1;

    /**
     * 行驶记录速度,单位为千米每小时(km/h)
     */
    public double vec2;

    /**
     * 报警状态,1:报警开始;2:报警结束
     */
    public int status;

    /**
     * 方向,0-359,正北为 0,顺时针
     */
    public int direction;

    /**
     * 上报报警信息内容
     */
    public String infoContent;


    public JSONObject toJSONString() {
        JSONObject object = new JSONObject();
        object.put("basicVehicleInfo", basicVehicleInfo);
        object.put("warnSrc", warnSrc);
        object.put("warnType", warnType);
        object.put("warnTime", warnTime);
        object.put("infoId", infoId);
        object.put("driver", driver);
        object.put("driverNo", driverNo);
        object.put("level", level);
        object.put("lon", lon);
        object.put("lat", lat);
        object.put("altitude", altitude);
        object.put("vec1", vec1);
        object.put("vec2", vec2);
        object.put("status", status);
        object.put("direction", direction);
        object.put("infoContent", infoContent);
        return object;
    }

}
